From e6b8536b5a4ffe74bde2d3281f39295a70457287 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Aug 2013 22:39:51 -0700 Subject: [PATCH] Emacs should no longer hang at startup on kFreeBSD. Applied upstream patch (in conjunction with 5113964): * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag. We can't portably rely on PTY_OPEN doing that, even if it calls posix_openpt with O_CLOEXEC. Origin: upstream, commit: 5113963, 57c5937ff85bce49f9dc8f4c66851620416bdc07 Added-by: Rob Browning Provided-By: Paul Eggert Bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15129 --- src/ChangeLog | 6 ++++++ src/process.c | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 588f2933eff..921d411082b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2013-08-21 Paul Eggert + + * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag. + We can't portably rely on PTY_OPEN doing that, even if + it calls posix_openpt with O_CLOEXEC. + 2013-03-11 Glenn Morris * Version 24.3 released. diff --git a/src/process.c b/src/process.c index 2fb5b16a19f..f6abf0ce8b5 100644 --- a/src/process.c +++ b/src/process.c @@ -661,6 +661,15 @@ allocate_pty (void) if (fd >= 0) { +#ifdef PTY_OPEN + /* Set FD's close-on-exec flag. This is needed even if + PT_OPEN calls posix_openpt with O_CLOEXEC, since POSIX + doesn't require support for that combination. + Multithreaded platforms where posix_openpt ignores + O_CLOEXEC (or where PTY_OPEN doesn't call posix_openpt) + have a race condition between the PTY_OPEN and here. */ + fcntl (fd, F_SETFD, FD_CLOEXEC); +#endif /* check to make certain that both sides are available this avoids a nasty yet stupid bug in rlogins */ #ifdef PTY_TTY_NAME_SPRINTF -- 2.30.2